/*
 * Класс инкапсулирующий все дом-операции класса Comment
 * Имеет два режима: редактирование и просмотр. 
 * Связано с тем что контейнер комментария может перевоплащаться в текстарию с тинимце и назад.
 * 
 * @author Alexander Sibiryakov, 23.05.08
 */
function CommentView(dom_element) {
	this.comment = dom_element;
	
	this.getOid = function() { return jQuery(this.comment).attr("id"); }
	this.oid = this.getOid();
	this.getAnswerElt = function() { return jQuery("#" + this.oid + ">ul.answer- a.js_answer"); }
	this.getEditElt = function() { return jQuery("#" + this.oid + ">ul.cinfo- a.js_cedit"); }
	this.getDelElt = function() { return jQuery("#" + this.oid + ">ul.cinfo- a.js_cdel"); }
	
	this.getCBody = function() { return jQuery("#" + this.oid + ">div.cbody-"); }
	
	this.changeToAnswerOpenedState = function() { 
		jQuery("#" + this.oid + ">ul.answer-:not(.js_answ_opened)").hide(); 
		jQuery("#" + this.oid + ">ul.js_answ_opened").removeClass("dn");
	}
	
	this.changeToAnswerClosedState = function() { 
		jQuery("#" + this.oid + ">ul.answer-:not(.js_answ_opened)").show(); 
		jQuery("#" + this.oid + ">ul.js_answ_opened").addClass("dn");		
	}
	
	this.getAnswCloseBtn = function() { return jQuery("#" + this.oid + ">ul.js_answ_opened a.js_answ_close"); }
	
	this.getSelf = function() { return this.comment; }
	this.setSelf = function(dom_obj) {	this.comment = dom_obj; }
	
	this.comment_content_elt = null;
	this.replaceBody = function(html) { jQuery(this.getSelf()).replaceWith(html); }	
	this.initEditState = function(formhtml) {
		this.replaceBody(formhtml);
		this.comment_content_elt = jQuery("#upbody"+this.oid);
		this.setSelf( jQuery("#cup"+this.oid) );
	}
	
	this.getCommentBody = function() {	return jQuery(this.getCBody()).html(); }
	this.tinyMceOn = function() {
		tinyMCE.execCommand('mceAddControl', false, jQuery(this.comment_content_elt).attr("id"));
	}
	
	this.tinyMceOff = function() {
		tinyMCE.execCommand('mceRemoveControl', false, jQuery(this.comment_content_elt).attr("id"));
	}
	
	this.setCommentContent = function(content) {	jQuery(this.comment_content_elt).val(content); }
	this.getCommentContent = function() {
		var content_id = jQuery(this.comment_content_elt).attr("id");
		if (tinyMCE.getInstanceById(content_id)) { 
			var ctext = tinyMCE.getInstanceById(content_id).getHTML();
		} else {
			var ctext = jQuery(this.comment_content_elt).val();
		}
		
		return ctext;
	}
	
	this.initViewState = function(html) {
		this.replaceBody(html);		
		this.setSelf(jQuery("#"+this.oid));
	}
	
	this.getUpSubmitBtn = function() { return jQuery("#upsubmit"+this.oid); }
	this.getUpCancelBtn = function() { return jQuery("#upcancel"+this.oid); }
}
